current version 1.6 - 20th July 2023
version | date | comment |
---|---|---|
1.0 | 28/Jun/2010 | Initial code. chiara corbari and davide rabuffetti |
1.1 | 03/May/2011 | Correct energy fluxes when snow is present |
1.2 | 10/Nov/2016 | Module rewritten to add new infiltration models and different soil properties management |
1.3 | 25/Jul/2022 | subsurface flow changed from muskingum to darcy. Runon option removed |
1.4 | 27/Jan/2023 | bug correction: percolationcell set to zero on hillslope and rivers in SetSoilDepth |
1.5 | 10/Feb/2023 | modified to not use river network |
1.6 | 20/Jul/2023 | SetSoilDepth renamed to PercolationAndCaprise and modified |
license: GNU GPL http://www.gnu.org/licenses/
Solve soil water and energy balance to update soil moisture and compute actual evapotranspiration, runoff, and groundwater recharge. Soil column is assumed to be divided in two layers:
the surface layer where roots develop (root zone)
the lower unsaturated layer that transfers water to recharge groundwater in landplain (transmission zone)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(grid_real), | public | :: | Ge | ||||
type(grid_real), | public | :: | Hse | ||||
type(grid_real), | public | :: | QinSoilSub |
input discharge in soil subsurface [m3/s] |
|||
type(grid_real), | public | :: | QoutSoilSub |
output discharge from soil subsurface [m3/s] |
|||
type(grid_real), | public | :: | Rnetta | ||||
type(grid_real), | public | :: | Ta_prec | ||||
type(grid_real), | public | :: | Ts | ||||
type(grid_real), | public | :: | Ts_prec | ||||
type(grid_real), | public | :: | Xle | ||||
type(grid_real), | public | :: | balanceError |
balance error [mm] |
|||
type(grid_real), | public | :: | capRise |
capillary rise [m/s] |
|||
type(grid_real), | public | :: | deltaSoilMoisture |
time step soil mositure variation (m) |
|||
integer(kind=short), | public | :: | dtSoilBalance | ||||
type(grid_real), | public | :: | et |
actual evapotranspiration rate [m/s] |
|||
type(grid_real), | public | :: | infilt |
infiltration rate [m/s] |
|||
type(grid_integer), | public | :: | interstormDuration |
interstorm duration [s] |
|||
type(grid_real), | public | :: | ksat_sub | ||||
type(grid_real), | public | :: | percolation |
deep percolation through soil [m/s] |
|||
type(grid_real), | public | :: | percolationFactor |
deep percolation factor [-] |
|||
type(grid_real), | public | :: | rainBalance |
actual rainfall rate as input to soil balance [m/s] |
|||
type(grid_integer), | public | :: | rainFlag |
set if it is raining in a cell |
|||
type(grid_real), | public | :: | runoff |
runoff rate [m/s] |
|||
type(grid_real), | public | :: | soilDepth |
soil depth [m] |
|||
type(grid_real), | public | :: | soilDepthRZ |
root zone depth [m] |
|||
type(grid_real), | public | :: | soilDepthTZ |
transmission zone depth [m] |
|||
type(grid_real), | public | :: | soilMoisture |
mean volumetric water content [m3/m3] |
|||
type(grid_real), | public | :: | soilMoistureRZ |
root zone volumetric water content [m3/m3] |
|||
type(grid_real), | public | :: | soilMoistureTZ |
transmission zone volumetric water content [m3/m3] |
|||
type(grid_real), | public | :: | soilSat |
mean soil relative saturation [0-1] |
|||
type(grid_real), | public | :: | soilSatRZ |
root zone soil relative saturation [0-1] |
|||
type(grid_real), | public | :: | soilSatTZ |
transmission zone soil relative saturation [0-1] |
|||
integer, | private, | parameter | :: | CHANNEL | = | 1 | |
integer, | private, | parameter | :: | HILLSLOPE | = | 0 | |
integer, | private, | parameter | :: | LAKE | = | 2 | |
integer, | private, | parameter | :: | LANDPLAIN | = | 3 | |
type(grid_integer), | private | :: | balanceId |
id code for solving water balance |
|||
real(kind=float), | private | :: | interstorm | ||||
real(kind=float), | private | :: | isd |
initial saturation degree, used for cold start |
|||
logical, | private | :: | saturatedByGroundwater |
groundwater table intercepts root zone |
|||
real(kind=float), | private | :: | thresholdStartEvent | ||||
type(DateTime), | private, | ALLOCATABLE | :: | wetBegin(:) | |||
integer, | private, | ALLOCATABLE | :: | wetCode(:) | |||
type(DateTime), | private, | ALLOCATABLE | :: | wetEnd(:) | |||
type(grid_integer), | private | :: | wetland |
return .TRUE. if wetland is flooded
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grid_integer) | :: | wetland | ||||
integer, | intent(in) | :: | row | |||
integer, | intent(in) | :: | col | |||
type(DateTime), | intent(in) | :: | time |
Initialize soil water balance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | inifile |
stores configuration information |
||
type(grid_integer), | intent(in) | :: | flowDirection |
flow direction map |
||
type(DateTime), | intent(in) | :: | time |
start time |
Solve soil water balance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(DateTime), | intent(in) | :: | time | |||
type(grid_real), | intent(in) | :: | rain |
rainfall rate [m/s] |
||
type(grid_real), | intent(in) | :: | irrigation |
irrigation rate [m/s] |
||
type(grid_integer), | intent(in) | :: | flowdir | |||
type(grid_real), | intent(in) | :: | vf |
vegetation fraction [0-1] |
||
type(grid_real), | intent(in) | :: | vadose |
compute percolation and capilalry rise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=short), | intent(in) | :: | id |
soil balance id |
||
integer(kind=short), | intent(in) | :: | i | |||
integer(kind=short), | intent(in) | :: | j | |||
real(kind=float), | intent(in) | :: | rain | |||
type(grid_real), | intent(in) | :: | vadose |
vadose zone depth |
||
type(grid_real), | intent(in) | :: | pet |
potential evapotranspiration |
||
real(kind=double), | intent(out) | :: | soilDepthCell | |||
real(kind=float), | intent(out) | :: | percolationcellRZ | |||
real(kind=float), | intent(out) | :: | percolationcellTZ | |||
real(kind=double), | intent(out) | :: | runoffcell |
set initial condition for soilwater balance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(IniList), | intent(in) | :: | iniDB |
set wetland for soilwater balance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(IniList), | intent(in) | :: | iniDB | |||
character(len=*), | intent(in) | :: | inifile |
update soil moisture
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=short), | intent(in) | :: | id |
soil balance id |
||
integer(kind=short), | intent(in) | :: | i | |||
integer(kind=short), | intent(in) | :: | j | |||
integer(kind=short), | intent(in) | :: | dt | |||
real(kind=double), | intent(in) | :: | soilDepthCell | |||
real(kind=float), | intent(inout) | :: | percolationcellRZ | |||
real(kind=float), | intent(inout) | :: | percolationcellTZ | |||
real(kind=double), | intent(inout) | :: | runoffcell | |||
real(kind=float), | intent(in) | :: | Qin | |||
real(kind=float), | intent(in) | :: | Qout |